﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Calendar
{
	/// <summary>
	/// 日历坐标系组件
	/// <para>
	/// 在ECharts中，我们非常有创意地实现了日历图，是通过使用日历坐标系组件来达到日历图效果的，如下方的几个示例图所示，我们可以在热力图、散点图、关系图中使用日历坐标系
	/// </para>
	/// <para>
	/// 在日历坐标系中使用热力图的示例:
	/// </para>
	/// <para>
	/// 在日历坐标系中使用散点图的示例:
	/// </para>
	/// <para>
	/// 在日历坐标系中使用关系图（以及混合图表）的示例:
	/// </para>
	/// <para>
	/// 灵活利用 echarts 图表和坐标系的组合，以及 API，可以实现更丰富的效果
	/// </para>
	/// <para>
	/// 在日历中使用文字
	/// </para>
	/// <para>
	/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=calendar-lunar&amp;amp;edit=1&amp;reset=1"/> target=、
	/// </para>
	/// <para>
	/// calendar.monthLabel.nameMap
	/// </para>
	/// <para>
	/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=calendar-pie&amp;edit=1&amp;reset=1"/>
	/// </para>
	/// </summary>
	public class Calendar
	{

		/// <summary>
		/// 组件 ID。默认不指定。指定则可用于在 option 或者 API 中引用组件。
		/// </summary>
		public dynamic id { get; set; } 

		/// <summary>
		/// 所有图形的 zlevel 值
		/// <para>
		/// zlevel用于 Canvas 分层，不同zlevel值的图形会放置在不同的 Canvas 中，Canvas 分层是一种常见的优化手段
		/// </para>
		/// <para>
		/// 我们可以把一些图形变化频繁（例如有动画）的组件设置成一个单独的zlevel
		/// </para>
		/// <para>
		/// 需要注意的是过多的 Canvas 会引起内存开销的增大，在手机端上需要谨慎使用以防崩溃
		/// </para>
		/// <para>
		/// zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面
		/// </para>
		/// </summary>
		public dynamic zlevel { get; set; }  = 0;

		/// <summary>
		/// 组件的所有图形的z值
		/// <para>
		/// 控制图形的前后顺序
		/// </para>
		/// <para>
		/// z值小的图形会被z值大的图形覆盖
		/// </para>
		/// <para>
		/// z相比zlevel优先级更低，而且不会创建新的 Canvas
		/// </para>
		/// </summary>
		public dynamic z { get; set; }  = 2;

		/// <summary>
		/// calendar组件离容器左侧的距离
		/// <para>
		/// left 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 left, center, right
		/// </para>
		/// <para>
		/// 如果 left 的值为left, center, right，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic left { get; set; }  = 80;

		/// <summary>
		/// calendar组件离容器上侧的距离
		/// <para>
		/// top 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 top, middle, bottom
		/// </para>
		/// <para>
		/// 如果 top 的值为top, middle, bottom，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic top { get; set; }  = 60;

		/// <summary>
		/// calendar组件离容器右侧的距离
		/// <para>
		/// right 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// <para>
		/// 默认自适应
		/// </para>
		/// </summary>
		public dynamic right { get; set; }  = "auto";

		/// <summary>
		/// calendar组件离容器下侧的距离
		/// <para>
		/// bottom 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// <para>
		/// 默认自适应
		/// </para>
		/// </summary>
		public dynamic bottom { get; set; }  = "auto";

		/// <summary>
		/// 日历坐标的整体宽度
		/// 注意: 默认cellSize 为20，若设置了width的值, 则cellSize中的宽度强制转为auto;
		/// </summary>
		public dynamic width { get; set; }  = "auto";

		/// <summary>
		/// 日历坐标的整体高度，
		/// 注意: 默认cellSize 为20，若设置了height的值, 则cellSize中的高度强制转为auto;
		/// </summary>
		public dynamic height { get; set; }  = "auto";

		/// <summary>
		/// 必填，日历坐标的范围 支持多种格式
		/// <para>number/string/Array</para>
		/// </summary>
		public dynamic range { get; set; } 

		/// <summary>
		/// 日历每格框的大小，可设置单值 或数组  第一个元素是宽 第二个元素是高
		/// <para>
		/// 支持设置自适应
		/// </para>
		/// <para>
		/// auto, 默认为高宽均为20
		/// </para>
		/// <para>number/Array</para>
		/// </summary>
		public dynamic cellSize { get; set; }  = 20;

		/// <summary>
		/// 日历坐标的布局朝向。
		/// horizontal
		/// vertical
		/// </summary>
		public WUDI.ECharts.Orient orient { get; set; }  = WUDI.ECharts.Orient.horizontal;

		/// <summary>
		/// 设置日历坐标分隔线的样式。
		/// </summary>
		public WUDI.ECharts.Calendar.SplitLine.SplitLine splitLine { get; set; } 

		/// <summary>
		/// 设置日历格的样式
		/// </summary>
		public WUDI.ECharts.Calendar.ItemStyle itemStyle { get; set; } 

		/// <summary>
		/// 设置日历坐标中 星期轴的样式
		/// </summary>
		public WUDI.ECharts.Calendar.DayLabel dayLabel { get; set; } 

		/// <summary>
		/// 设置日历坐标中 月份轴的样式
		/// </summary>
		public WUDI.ECharts.Calendar.MonthLabel monthLabel { get; set; } 

		/// <summary>
		/// 设置日历坐标中 年的样式
		/// </summary>
		public WUDI.ECharts.Calendar.YearLabel yearLabel { get; set; } 

		/// <summary>
		/// 图形是否不响应和触发鼠标事件，默认为 false，即响应和触发鼠标事件。
		/// </summary>
		public dynamic silent { get; set; }  = false;

	}
}